阅读导航前言一、priority_queue简介1.概念2.特点二、priority_queue使用1.基本操作2.底层结构三、priority_queue模拟实现⭕C++代码⭕priority_queue中的仿函数总结温馨提示前言⭕文章绑定了VS平台下std::priority_queue的源码,大家可以下载了解一下😍前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的命名空间的一些知识点以及关于C++的缺省参数、函数重载,引用和内联函数也认识了什么是类和对象以及怎么去new一个‘对象’,以及学习了几个STL的结构也相信大家都掌握的不错,接下来博主将会带领大家继续学习有关
文章目录一.什么是RAII内存管理技术?二.智能指针unique_ptrshared_ptr循环引用问题weak_ptr一.什么是RAII内存管理技术?C++在引入异常机制后,代码执行流的跳转变得难以预料,如果使用普通的指针进行内存管理,很难避免内存泄漏的问题(执行流跳转导致堆区资源无法被释放)RAII技术指的是利用对象的生命周期来管理内存资源,就堆区内存资源的管理而言,指的就是:将指针封装在类中,在类对象构造时获取堆区资源,当类对象生命周期结束时,通过类对象的析构函数自动完成堆区资源的释放,这样的类对象就是智能指针智能指针可以有效地避免开发中出现内存泄漏的问题,同时为开发者省去了很多时间和精
vector的介绍及使用1.1vector的介绍cplusplus.com/reference/vector/vector/vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到
阅读导航前言一、list简介1.概念2.特点二、list的使用1.list的构造2.常见的操作⭕std::list类型的增、删、查、改三、list与vector的对比温馨提示前言文章绑定了VS平台下std::list的源码,大家可以下载了解一下😍前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的命名空间的一些知识点以及关于C++的缺省参数、函数重载,引用和内联函数也认识了什么是类和对象以及怎么去new一个‘对象’,以及学习了几个STL的结构也相信大家都掌握的不错,接下来博主将会带领大家继续学习有关C++比较重要的知识点——list(STL)。下面话不多说坐稳扶好咱们要开车
C++STL中的非变易算法(Non-modifyingAlgorithms)是指那些不会修改容器内容的算法,是C++提供的一组模板函数,该系列函数不会修改原序列中的数据,而是对数据进行处理、查找、计算等操作,并通过迭代器实现了对序列元素的遍历与访问。由于迭代器与算法是解耦的,因此非变易算法可以广泛地应用于各种容器上,提供了极高的通用性和灵活性。这些算法都是在头文件中定义的,其主要包括以下几类非变易算法:查找算法:find():在容器中查找指定值的元素,并返回第一个匹配的位置。find_if():根据给定的条件(函数对象或谓词)查找容器中满足条件的元素,并返回第一个匹配的位置。count():计
目录一.认识vector二.vector的使用1.vector的构造函数2.vector的迭代器2.1begin(),end()2.2rbegin(),rend()2.3迭代器初始化对象 3.vector增删查改3.1push_back(),pop_back()3.2 insert(),erase()3.3operator[] 4.vector空间控制4.1size(),capacity(),empty()4.2resize(),reserve()一.认识vectorvector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对v
这篇文章的主要内容是C++中的函数模板、类模板、STL的介绍。希望对C++爱好者有所帮助,内容充实且干货,点赞+收藏防止找不到!再次感谢每个读者和正在学习编程的朋友莅临!更多优质内容请点击移驾:C++收录库:重生之C++启程(文章平均质量分93)目录 1.模板(1)函数模板(2)类模板2.认识STL(1)什么是STL(2)STL的六大组件(3)如何学习STL1.模板(1)函数模板假设一个场景:当我们要写一个swap()函数时候,是不是要这样写#includeusingnamespacestd;voidswap(int&a,int&b){ inttmp=a; a=b; b=tmp;}intmai
文章篇幅较长,越3万余字,建议电脑端访问文章目录一、前言二、vector的介绍及使用1、vector的介绍2、常用接口细述1)vector类对象的默认成员函数①构造函数②拷贝构造③赋值重载2)vector类对象的访问及遍历操作①operator[]②迭代器【⭐】③范围for3)vector类对象的常见容量操作①size②capacity③empty④reserve⑤resize4)vector类对象的修改操作①push_back②pop_back③insert④erase⑤find三、vector深度剖析及模拟实现【✔】1、源码引入2、模拟实现1)迭代器2)容量💻第一轮测试—空指针异常💻第二轮
目录一.为什么学习string类(1)C语言中的字符串(2)标准库里面的string类二.string类的常用接口说明(1)string类对象的常见构造(2)string类对象的容量操作1.size(),length().2.capacity()3.empty() 4.clear() 5.reserve() 6.resize()(3)string类对象的访问及遍历操作 1.operator[pos],at(size_tpos) 2.back(),front()(4)string类的迭代器1.begin(),end()2.rbegin(),rend()3.范围for(5)string类对象的修改
文章目录push_front&&pop_frontpush_back&&pop_backinserterase迭代器begin&&endrbegin和rendfront&&backsizeresizeemptyclearsortspliceuniquemergereverse![在这里插入图片描述](https://img-blog.csdnimg.cn/717807397d8d499d840aae2e3127f467.png将文档翻译提炼得到以下结论list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储